BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
Intel Core i7-7500U CPU 2.70GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
.NET Core SDK=5.0.104
[Host] : .NET Core 5.0.5 (CoreCLR 5.0.521.16609, CoreFX 5.0.521.16609), X64 RyuJIT
DefaultJob : .NET Core 5.0.5 (CoreCLR 5.0.521.16609, CoreFX 5.0.521.16609), X64 RyuJIT
NewExpression constructorExpression = Expression.New(HeadersType);
Expression<Func<object>> lambdaExpression = Expression.Lambda<Func<object>>(constructoeExpression);
Func<object> createHeadersFunc = lambdaExpression.Compile();
object Headers = createHeadersFunc();
Type headersType = typeof(Headers);
DynamicMethod createHeadersMethod = new DynamicMethod(
name: $"KafkaDynamicMethodHeaders",
returnType: headersType,
parametertypes: null,
module: typeof(ConstructorBenchmarks).Module,
skipVisibility: false);
IL_0000: newobj instance void Headers::.ctor()
IL_0005: ret
using BenchmarkDotNet.Running;
BenchmarkRunner.Run<ConstructorBenchmarks>();
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
Intel Core i7-7500U CPU 2.70GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
[Host] : .NET Framework 4.8 (4.8.4300.0), X64 RyuJIT
DefaultJob : .NET Framework 4.8 (4.8.4300.0), X64 RyuJIT
Type typeToCreate = typeof(Headers);
ConstructorInfor ctor = typeToCreate.GetConstructor(System.Type.EmptyTypes);
object headers = ctor.Invoke(null);
Headers KafkaDynamicMethodHeaders()
{
return new Headers();
}
ConstructorInfor ctor = typeToCreate.GetConstructor(System.Type.EmptyTypes);
ILGenerator il = createHeadersMethod.GetILGenerator();
il.Emit(OpCodes.Newobj, Ctor);
il.Emit(OpCodes.Ret);
Func<object> headersDelegate = createHeadersMethod.CreateDelegate(typeof(Func<object>));
object headers = headersDelegate();